#!/usr/bin/python
# -*- coding: utf-8 -*-

"""
This file is part of web2py Web Framework (Copyrighted, 2007)
Developed by Massimo Di Pierro <mdipierro@cs.depaul.edu>
License: GPL v2
"""

__all__ = ['contentype']

CONTENT_TYPE = {
    '.ai': 'application/postscript',
    '.aif': 'audio/x-aiff',
    '.aifc': 'audio/x-aiff',
    '.aiff': 'audio/x-aiff',
    '.asc': 'text/plain',
    '.au': 'audio/basic',
    '.avi': 'video/x-msvideo',
    '.bcpio': 'application/x-bcpio',
    '.bin': 'application/octet-stream',
    '.c': 'text/plain',
    '.cc': 'text/plain',
    '.ccad': 'application/clariscad',
    '.cdf': 'application/x-netcdf',
    '.class': 'application/octet-stream',
    '.cpio': 'application/x-cpio',
    '.cpt': 'application/mac-compactpro',
    '.csh': 'application/x-csh',
    '.css': 'text/css',
    '.csv': 'text/csv',
    '.dcr': 'application/x-director',
    '.dir': 'application/x-director',
    '.dms': 'application/octet-stream',
    '.doc': 'application/msword',
    '.drw': 'application/drafting',
    '.dvi': 'application/x-dvi',
    '.dwg': 'application/acad',
    '.dxf': 'application/dxf',
    '.dxr': 'application/x-director',
    '.eps': 'application/postscript',
    '.etx': 'text/x-setext',
    '.exe': 'application/octet-stream',
    '.ez': 'application/andrew-inset',
    '.f': 'text/plain',
    '.f90': 'text/plain',
    '.fli': 'video/x-fli',
    '.flv': 'video/x-flv',
    '.gif': 'image/gif',
    '.gtar': 'application/x-gtar',
    '.gz': 'application/x-gzip',
    '.h': 'text/plain',
    '.hdf': 'application/x-hdf',
    '.hh': 'text/plain',
    '.hqx': 'application/mac-binhex40',
    '.htm': 'text/html',
    '.html': 'text/html',
    '.ice': 'x-conference/x-cooltalk',
    '.ico': 'image/vnd.microsoft.icon',
    '.ief': 'image/ief',
    '.iges': 'model/iges',
    '.igs': 'model/iges',
    '.ips': 'application/x-ipscript',
    '.ipx': 'application/x-ipix',
    '.jpe': 'image/jpeg',
    '.jpeg': 'image/jpeg',
    '.jpg': 'image/jpeg',
    '.js': 'application/x-javascript',
    '.kar': 'audio/midi',
    '.latex': 'application/x-latex',
    '.lha': 'application/octet-stream',
    '.lsp': 'application/x-lisp',
    '.lzh': 'application/octet-stream',
    '.m': 'text/plain',
    '.man': 'application/x-troff-man',
    '.me': 'application/x-troff-me',
    '.mesh': 'model/mesh',
    '.mid': 'audio/midi',
    '.midi': 'audio/midi',
    '.mif': 'application/vnd.mif',
    '.mime': 'www/mime',
    '.mov': 'video/quicktime',
    '.movie': 'video/x-sgi-movie',
    '.mp2': 'audio/mpeg',
    '.mp3': 'audio/mpeg',
    '.mpe': 'video/mpeg',
    '.mpeg': 'video/mpeg',
    '.mpg': 'video/mpeg',
    '.mpga': 'audio/mpeg',
    '.ms': 'application/x-troff-ms',
    '.msh': 'model/mesh',
    '.nc': 'application/x-netcdf',
    '.oda': 'application/oda',
    '.pbm': 'image/x-portable-bitmap',
    '.pdb': 'chemical/x-pdb',
    '.pdf': 'application/pdf',
    '.pgm': 'image/x-portable-graymap',
    '.pgn': 'application/x-chess-pgn',
    '.png': 'image/png',
    '.pnm': 'image/x-portable-anymap',
    '.pot': 'application/mspowerpoint',
    '.ppm': 'image/x-portable-pixmap',
    '.pps': 'application/mspowerpoint',
    '.ppt': 'application/mspowerpoint',
    '.ppz': 'application/mspowerpoint',
    '.pre': 'application/x-freelance',
    '.prt': 'application/pro_eng',
    '.ps': 'application/postscript',
    '.qt': 'video/quicktime',
    '.ra': 'audio/x-realaudio',
    '.ram': 'audio/x-pn-realaudio',
    '.ras': 'image/cmu-raster',
    '.rgb': 'image/x-rgb',
    '.rm': 'audio/x-pn-realaudio',
    '.roff': 'application/x-troff',
    '.rpm': 'audio/x-pn-realaudio-plugin',
    '.rtf': 'text/rtf',
    '.rtx': 'text/richtext',
    '.scm': 'application/x-lotusscreencam',
    '.set': 'application/set',
    '.sgm': 'text/sgml',
    '.sgml': 'text/sgml',
    '.sh': 'application/x-sh',
    '.shar': 'application/x-shar',
    '.silo': 'model/mesh',
    '.sit': 'application/x-stuffit',
    '.skd': 'application/x-koan',
    '.skm': 'application/x-koan',
    '.skp': 'application/x-koan',
    '.skt': 'application/x-koan',
    '.smi': 'application/smil',
    '.smil': 'application/smil',
    '.snd': 'audio/basic',
    '.sol': 'application/solids',
    '.spl': 'application/x-futuresplash',
    '.src': 'application/x-wais-source',
    '.step': 'application/STEP',
    '.stl': 'application/SLA',
    '.stp': 'application/STEP',
    '.sv4cpio': 'application/x-sv4cpio',
    '.sv4crc': 'application/x-sv4crc',
    '.swf': 'application/x-shockwave-flash',
    '.t': 'application/x-troff',
    '.tar': 'application/x-tar',
    '.tcl': 'application/x-tcl',
    '.tex': 'application/x-tex',
    '.texi': 'application/x-texinfo',
    '.tif': 'image/tiff',
    '.tiff': 'image/tiff',
    '.tr': 'application/x-troff',
    '.tsi': 'audio/TSP-audio',
    '.tsp': 'application/dsptype',
    '.tsv': 'text/tab-separated-values',
    '.txt': 'text/plain',
    '.unv': 'application/i-deas',
    '.ustar': 'application/x-ustar',
    '.vcd': 'application/x-cdlink',
    '.vda': 'application/vda',
    '.viv': 'video/vnd.vivo',
    '.vivo': 'video/vnd.vivo',
    '.vrml': 'model/vrml',
    '.wav': 'audio/x-wav',
    '.wrl': 'model/vrml',
    '.xbm': 'image/x-xbitmap',
    '.xlc': 'application/vnd.ms-excel',
    '.xll': 'application/vnd.ms-excel',
    '.xlm': 'application/vnd.ms-excel',
    '.xls': 'application/vnd.ms-excel',
    '.xlw': 'application/vnd.ms-excel',
    '.xml': 'application/xml',
    '.xpm': 'image/x-xpixmap',
    '.xsl': 'application/xml',
    '.xwd': 'image/x-xwindowdump',
    '.xyz': 'chemical/x-pdb',
    '.zip': 'application/zip',
    }


def contenttype(filename):
    """
    returns the Content-Type: string given the extension in the filename.
    """

    i = filename.rfind('.')
    if i < 0:
        return 'text/plain'
    return CONTENT_TYPE.get(filename[i:].lower(), 'text/plain')


